Telegram Group & Telegram Channel
🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib



tg-me.com/golang_lib/458
Create:
Last Update:

🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib

BY Библиотека Go (Golang) разработчика




Share with your friend now:
tg-me.com/golang_lib/458

View MORE
Open in Telegram


Библиотека Go Golang разработчика Telegram | DID YOU KNOW?

Date: |

NEWS: Telegram supports Facetime video calls NOW!

Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.

Why Telegram?

Telegram has no known backdoors and, even though it is come in for criticism for using proprietary encryption methods instead of open-source ones, those have yet to be compromised. While no messaging app can guarantee a 100% impermeable defense against determined attackers, Telegram is vulnerabilities are few and either theoretical or based on spoof files fooling users into actively enabling an attack.

Библиотека Go Golang разработчика from cn


Telegram Библиотека Go (Golang) разработчика
FROM USA